home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / gui / x / xfig.lha / src / x11 / w_zoom.h < prev   
Encoding:
C/C++ Source or Header  |  1993-07-26  |  2.1 KB  |  51 lines

  1. /*
  2.  * FIG : Facility for Interactive Generation of figures
  3.  * Copyright (c) 1991 by Henning Spruth
  4.  *
  5.  * "Permission to use, copy, modify, distribute, and sell this software and its
  6.  * documentation for any purpose is hereby granted without fee, provided that
  7.  * the above copyright notice appear in all copies and that both the copyright
  8.  * notice and this permission notice appear in supporting documentation. 
  9.  * No representations are made about the suitability of this software for 
  10.  * any purpose.  It is provided "as is" without express or implied warranty."
  11.  */
  12.  
  13. extern float    zoomscale;
  14. extern int    zoomxoff;
  15. extern int    zoomyoff;
  16.  
  17. #define ZOOMX(x) round(zoomscale*((x)-zoomxoff))
  18. #define ZOOMY(y) round(zoomscale*((y)-zoomyoff))
  19. #define BACKX(x) round((x)/zoomscale+zoomxoff)
  20. #define BACKY(y) round((y)/zoomscale+zoomyoff)
  21.  
  22. #define zXDrawPoint(d,w,gc,x,y) XDrawPoint(d,w,gc,ZOOMX(x),ZOOMY(y))
  23. #define zXDrawArc(d,w,gc,x,y,d1,d2,a1,a2)\
  24.     XDrawArc(d,w,gc,ZOOMX(x),ZOOMY(y),round(zoomscale*(d1)),round(zoomscale*(d2)),\
  25.           a1,a2)
  26. #define zXFillArc(d,w,gc,x,y,d1,d2,a1,a2)\
  27.     XFillArc(d,w,gc,ZOOMX(x),ZOOMY(y),round(zoomscale*(d1)),round(zoomscale*(d2)),\
  28.           a1,a2)
  29. #define zXDrawLine(d,w,gc,x1,y1,x2,y2)\
  30.     XDrawLine(d,w,gc,ZOOMX(x1),ZOOMY(y1),ZOOMX(x2),ZOOMY(y2))
  31. #define zXRotDrawString(d,w,font,gc,x,y,s,l)\
  32.     XRotDrawString(d,w,font,gc,ZOOMX(x),ZOOMY(y),s,l)
  33. #define zXFillRectangle(d,w,gc,x1,y1,x2,y2)\
  34.     XFillRectangle(d,w,gc,ZOOMX(x1),ZOOMY(y1),\
  35.         round(zoomscale*(x2)),round(zoomscale*(y2)))
  36. #define zXDrawRectangle(d,w,gc,x1,y1,x2,y2)\
  37.     XDrawRectangle(d,w,gc,ZOOMX(x1),ZOOMY(y1),\
  38.         round(zoomscale*(x2)),round(zoomscale*(y2)))
  39. #define zXDrawLines(d,w,gc,p,n,m)\
  40.     {int i;\
  41.      for(i=0;i<n;i++){p[i].x=ZOOMX(p[i].x);p[i].y=ZOOMY(p[i].y);}\
  42.      XDrawLines(d,w,gc,p,n,m);\
  43.      for(i=0;i<n;i++){p[i].x=BACKX(p[i].x);p[i].y=BACKY(p[i].y);}\
  44.     }
  45. #define zXFillPolygon(d,w,gc,p,n,m,o)\
  46.     {int i;\
  47.      for(i=0;i<n;i++){p[i].x=ZOOMX(p[i].x);p[i].y=ZOOMY(p[i].y);}\
  48.      XFillPolygon(d,w,gc,p,n,m,o);\
  49.      for(i=0;i<n;i++){p[i].x=BACKX(p[i].x);p[i].y=BACKY(p[i].y);}\
  50.     }
  51.